Tarea 3

Parte 2:

Los siguientes ejercicios son utilizando su cluster multinodo creado con su imagen de docker:

En tu carpeta alumnos/ crea la carpeta tarea_3/parte_2 ¡en minúsculas!

Ejericio 1

El mapper.py , reducer.py y output.txt del conteo del # de registros por cicloestación

Se ejecutó el job con:

./bin/hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.4.jar \
-input /tarea3/ciclo_est_retiro_num_prueba.txt \
-output /tarea3/output \
-file /usr/local/hadoop/datos/mapper.py \
-mapper mapper.py \
-file /usr/local/hadoop/datos/reducer.py \
-reducer reducer.py
  • Imágen del jps del clúster

jps ejecución dfs

  • Imágen de localhost:8088 seleccionando la opción Nodes
nodos

nodos

  • Imágen de localhost:8088 seleccionando la opción FINISHED para ver que los jobs corrieron existosamente
job concluido

job concluido

  • Imágen de output.txt
output.txt

output.txt

Ejercicio 2 (Reducer-Side Join)

De acuerdo con stackoverflow se requieren dos mapreduce jobs para hacer un join de tres tablas. De esta manera incluimos el mapper y el reducer del primer y el segundo job.

El mapper.py , reducer.py y output.txt del join del lado del mapper

Hacemos el join lo hacemos en dos pasos, primero ejecutamos:

./bin/hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.4.jar \
-input /tarea3/flights.csv \
-input /tarea3/airports.csv \
-output /tarea3/output_join \
-file /usr/local/hadoop/datos/join_mapper.py \
-mapper join_mapper.py \
-file /usr/local/hadoop/datos/join_reducer.py \
-reducer join_reducer.py
  • Imágen del jps del clúster

jps ejecución dfs

  • Imágen de localhost:8088 seleccionando la opción Nodes
nodos

nodos

  • Imágen de localhost:8088 seleccionando la opción FINISHED para ver que los jobs corrieron existosamente
job concluido

job concluido

  • Imágen de output.txt
output.txt

output.txt

El mapper.py , reducer.py y output.txt del join del lado del mapper

La salida del primer join la usamos como entrada del segundo join ejecutando:

./bin/hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.4.jar \
-input /tarea3/output_join/part-00000 \
-input /tarea3/airlines.csv \
-output /tarea3/output_join_reducer \
-file /usr/local/hadoop/datos/join_mapper_1.py \
-mapper join_mapper_1.py \
-file /usr/local/hadoop/datos/join_reducer_1.py \
-reducer join_reducer_1.py
  • Imágen del jps del clúster

jps ejecución dfs

  • Imágen de localhost:8088 seleccionando la opción Nodes
nodos

nodos

  • Imágen de localhost:8088 seleccionando la opción FINISHED para ver que los jobs corrieron existosamente
job concluido

job concluido

  • Imágen de output.txt (renglones 100,000 a 100,010)
output.txt

output.txt

Ejercicio 3 (Mapper-Side Join)

En este blog encontramos que el mapper-side join requiere que se cargue a memoria la ‘tabla chica’ y el join lo realiza cada mapper. En este caso el reducer no hace nada.

En este caso solo juntamos dos tablas: flights y airports

El mapper.py , reducer.py y output.txt del join del lado del reducer

Ejecutamos:

./bin/hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.4.jar \
-input /tarea3/flights.csv \
-input /tarea3/airports.csv \
-output /tarea3/output_join_mapper \
-file /usr/local/hadoop/datos/join_mapper_0.py \
-mapper join_mapper_0.py \
-file /usr/local/hadoop/datos/join_reducer_0.py \
-reducer join_reducer_0.py
  • Imágen del jps del clúster

jps ejecución dfs

  • Imágen de localhost:8088 seleccionando la opción Nodes
nodos

nodos

  • Imágen de localhost:8088 seleccionando la opción FINISHED para ver que los jobs corrieron existosamente
job concluido

job concluido

  • Imágen de output.txt
output.txt

output.txt

Se incluye el Dockerfile usado para generar los nodos

  • El rmd y html con el reporte que contiene el código del mapper.py, reducer.py, head del output.txt y las imágenes solicitadas de cada ejercicio

  • El dockerfile de su imágen